Imports NHibernate.Criterion
Imports NHibernate
Imports FrameworkNHibernate
Imports FrameworkNHibernate.Dal

Public Class ContratoDao
    Inherits GenericsNHibernateDao(Of Contrato)
    Implements IContratoDao

    Public Function BuscarPorCliente(ByRef _cliente As Cliente) As List(Of Contrato) Implements IContratoDao.BuscarPorCliente

        Dim _criterio As ICriteria = MyBase.CurrentSession.CreateCriteria(GetType(Contrato))

        If Not _cliente.Nome = String.Empty Then
            _criterio.Add(Expression.Like("Cliente.Nome", _cliente.Nome))
        End If

        If Not _cliente.CPF = String.Empty Then
            _criterio.Add(Expression.Like("Cliente.CPF", _cliente.CPF))
        End If

        If Not _cliente.RG = String.Empty Then
            _criterio.Add(Expression.Like("Cliente.RG", _cliente.RG))
        End If


        Return _criterio.List(Of Cliente)()
    End Function

    Public Function BuscarPorLoja(ByRef _loja As Loja) As List(Of Contrato) Implements IContratoDao.BuscarPorLoja
        Dim _criterio As ICriteria = MyBase.CurrentSession.CreateCriteria(GetType(Contrato))

        If _loja.Nome = String.Empty Then
            _criterio.Add(Expression.Like("Loja.Nome", _loja.Nome))
        End If

        Return _criterio.List(Of Cliente)()
    End Function

    Public Function BuscarPorVestuario(ByRef _vestuario As Vestuario) As List(Of Contrato) Implements IContratoDao.BuscarPorVestuario

        Dim _criterio As ICriteria = MyBase.CurrentSession.CreateCriteria(GetType(Contrato))

        If _vestuario.TipoVestuario IsNot Nothing Then
            _criterio.Add(Expression.Like("Vestuario.TipoVestuario", _vestuario.TipoVestuario))
        End If

        If _vestuario.Codigo IsNot Nothing Then
            _criterio.Add(Expression.Like("Vestuario.Codigo", _vestuario.Codigo))
        End If

        Return _criterio.List(Of Cliente)()
    End Function
End Class


